home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / coding / dsp / c5xug.exe / FL_DIV.ASM < prev    next >
Encoding:
Assembly Source File  |  1990-06-25  |  2.3 KB  |  124 lines

  1. ;**************************************************************
  2. ;  
  3. ;                 fl_div.asm
  4. ;  
  5. ;                 staff
  6. ;  
  7. ;                 06-25-90
  8. ;  
  9. ;           (C) Texas Instruments Inc., 1992 
  10. ;  
  11. ;           Refer to the file 'license.txt' included with this 
  12. ;           this package for usage and license information. 
  13. ;  
  14. ;**************************************************************
  15.  
  16.  
  17.     .title    'Floating point Division Routine'
  18.  
  19.  
  20.  
  21. *    INPUT FORMAT
  22. *    ============
  23. *    ----------------
  24. *    |  ALL 0 OR 1  |    SIGN WORD
  25. *    ----------------
  26. *
  27. *    ----------------
  28. *    |   16 BITS    |    EXPONENT
  29. *    ----------------
  30. *
  31. *    ----------------
  32. *    |0|   15 BITS  |    HIGH PART OF MANTISSA
  33. *    ----------------
  34. *
  35. *    ----------------
  36. *    |0| 9 BITS |-0-|    LOW PART OF MANTISSA
  37. *    ----------------
  38. *
  39. *    OUTPUT FORMAT
  40. *    =============
  41. *    SAME AS INPUT FORMAT EXCEPT THAT LOW PART OF MANTISSA HAS
  42. *    16 VALID BITS INSTEAD OF HAVING A ZERO MSB.
  43. *
  44.  
  45. ASIGN    .set    60h    ;Sign, exponent, high and low part of mantissa
  46. AEXP    .set    61h    ;of input number A
  47. AHI    .set    62h
  48. ALO    .set    63h
  49.  
  50. BSIGN    .set    64h    ;Sign, exponent, high and low part of mantissa
  51. BEXP    .set    65h    ;of input number B
  52. BHI    .set    66h
  53. BLO    .set    67h
  54.  
  55. CSIGN    .set    68h    ;Sign, exponent, high and low part of mantissa
  56. CEXP    .set    69h    ;of the resuting floating point number C
  57. CHI    .set    6Ah
  58. CLO    .set    6Bh
  59.  
  60. QHI    .set    6Ch    ;QHIQLO is 32-bit approximate result
  61. QLO    .set    6Dh
  62. R1    .set    6Ch
  63. R2    .set    6Dh
  64. CT    .set    6Eh    ;16-bit correction term
  65.  
  66.  
  67.     .text
  68.  
  69. INIT    LDP    #0
  70.     SETC    SXM
  71.     MAR    *,AR0        ;for normalization
  72.     LAR    AR0,0        ;Reset exponent counter
  73.  
  74. START    LACL    ASIGN
  75.     XOR    BSIGN
  76.     SACL    CSIGN        ;storing sign of the result
  77.     LACC    AHI,16
  78.     ADDS    ALO        ;Acc = AHIALO
  79.     BSAR    4        ;to avoid overflow
  80.     RPT    #15
  81.     SUBC    BHI        ;A/BHI:Remainder in AccH,Quotient in AccL
  82.     SACH    R1
  83.     SACL    QHI
  84.     LACC    R1,15
  85.     RPT    #15
  86.     SUBC    BHI        ;R1*2e15/BHI
  87.     SACH    R2
  88.     SACL    QLO
  89.     LT    QHI
  90.     MPY    BLO
  91.     PAC            ;Acc = QHI*BLO
  92.     RPT    #15
  93.     SUBC    BHI        ;(QHI*BLO)/BHI
  94.     SACL    CT        ;Save the correction term
  95.     LACL    QLO
  96.     ADD    QHI,16        ;Acc = QHIQLO
  97.     SUB    CT        ;Result adjusted by correction term
  98.     SACL    CLO
  99.     SACH    CHI        ;Store the result
  100.     BIT    CHI,3
  101.     LACC    AEXP
  102.     SUB    BEXP
  103.     XC    1,TC
  104.     ADD    #1
  105.     CPL    #0,CHI
  106.     SACL    CEXP
  107.     XC    1,TC
  108.     LACC    CLO,16
  109.     XC    2,NTC
  110.     LACC    CHI,16
  111.     ADDS    CLO
  112.     BCND    NOFLOW,LT
  113.     RPT    #13
  114.     NORM    *+
  115.     RETD
  116.     SACH    CHI
  117.     SACL    CLO
  118.  
  119. NOFLOW    CLRC    SXM
  120.     SFR
  121.     RETD
  122.     SACH    CHI
  123.     SACL    CLO
  124.